home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / misc / dspice0s / memadj.c < prev    next >
C/C++ Source or Header  |  1992-11-21  |  3KB  |  96 lines

  1. /* memadj.f -- translated by f2c (version of 3 February 1990  3:36:42).
  2.    You must link the resulting object file with the libraries:
  3.     -lF77 -lI77 -lm -lc   (in that order)
  4. */
  5.  
  6. #include "f2c.h"
  7.  
  8. /* Common Block Declarations */
  9.  
  10. struct {
  11.     doublereal cpyknt;
  12.     integer istack[1], lorg, icore, maxcor, maxuse, memavl, ldval, numblk, 
  13.         loctab, ltab, ifwa, nwoff, ntab, maxmem, memerr, nwd4, nwd8, 
  14.         nwd16;
  15. } memmgr_;
  16.  
  17. #define memmgr_1 memmgr_
  18.  
  19. /* Table of constant values */
  20.  
  21. static integer c__1 = 1;
  22. static integer c__0 = 0;
  23.  
  24. /*<       subroutine memadj >*/
  25. /* Subroutine */ int memadj_()
  26. {
  27.     /* System generated locals */
  28.     integer i_1, i_2;
  29.  
  30.     /* Local variables */
  31.     static integer ltab1;
  32.     extern /* Subroutine */ int copy4_();
  33.     static integer memdec, memdel;
  34.     extern /* Subroutine */ int comprs_();
  35.     extern integer nxtmem_();
  36.     extern /* Subroutine */ int memory_();
  37.     static integer nwords;
  38.  
  39. /*<       implicit double precision (a-h,o-z) >*/
  40. /* spice version 2g.6  sccsid=memmgr 3/15/83 */
  41. /*<       common /memmgr/ cpyknt,istack(1),lorg,icore,maxcor,maxuse,memavl, >*/
  42. /*<      1   ldval,numblk,loctab,ltab,ifwa,nwoff,ntab,maxmem,memerr,nwd4, >*/
  43. /*<      2   nwd8,nwd16 >*/
  44. /*<    50 maxuse=max0(maxuse,(ldval-memavl-ifwa)) >*/
  45. /* L50: */
  46. /* Computing MAX */
  47.     i_1 = memmgr_1.maxuse, i_2 = memmgr_1.ldval - memmgr_1.memavl - 
  48.         memmgr_1.ifwa;
  49.     memmgr_1.maxuse = max(i_2,i_1);
  50. /*<       memdec=2*nxtmem(1) >*/
  51.     memdec = nxtmem_(&c__1) << 1;
  52. /*<       if (memavl.lt.memdec) return >*/
  53.     if (memmgr_1.memavl < memdec) {
  54.     return 0;
  55.     }
  56. /* ...  compress current allocations of memory */
  57. /*<       call comprs(0,ldval) >*/
  58.     comprs_(&c__0, &memmgr_1.ldval);
  59. /* ...  adjust memory size */
  60. /*<       memdel=0 >*/
  61.     memdel = 0;
  62. /*<    60 icore=icore-memdec >*/
  63. L60:
  64.     memmgr_1.icore -= memdec;
  65. /*<       memdel=memdel+memdec >*/
  66.     memdel += memdec;
  67. /*<       memavl=memavl-memdec >*/
  68.     memmgr_1.memavl -= memdec;
  69. /*<       if (memavl.ge.memdec) go to 60 >*/
  70.     if (memmgr_1.memavl >= memdec) {
  71.     goto L60;
  72.     }
  73. /*<       ltab1=ldval-ntab >*/
  74.     ltab1 = memmgr_1.ldval - memmgr_1.ntab;
  75. /*<       istack(ltab1+2)=istack(ltab1+2)-memdel >*/
  76.     memmgr_1.istack[ltab1 + 1] -= memdel;
  77. /* ...  relocate block entry table */
  78. /*<       nwords=numblk*ntab >*/
  79.     nwords = memmgr_1.numblk * memmgr_1.ntab;
  80. /*<       cpyknt=cpyknt+dble(nwords) >*/
  81.     memmgr_1.cpyknt += (doublereal) nwords;
  82. /*<       call copy4(istack(loctab+1),istack(loctab-memdel+1),nwords) >*/
  83.     copy4_(&memmgr_1.istack[memmgr_1.loctab], &memmgr_1.istack[
  84.         memmgr_1.loctab - memdel], &nwords);
  85. /*<       loctab=loctab-memdel >*/
  86.     memmgr_1.loctab -= memdel;
  87. /*<       ldval=ldval-memdel >*/
  88.     memmgr_1.ldval -= memdel;
  89. /*<       call memory >*/
  90.     memory_();
  91. /*<       return >*/
  92.     return 0;
  93. /*<       end >*/
  94. } /* memadj_ */
  95.  
  96.